home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / HTML / QuickForm / Page.php < prev    next >
PHP Script  |  2004-10-01  |  5KB  |  181 lines

  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4: */
  3. // +----------------------------------------------------------------------+
  4. // | PHP version 4.0                                                      |
  5. // +----------------------------------------------------------------------+
  6. // | Copyright (c) 1997-2003 The PHP Group                                |
  7. // +----------------------------------------------------------------------+
  8. // | This source file is subject to version 2.0 of the PHP license,       |
  9. // | that is bundled with this package in the file LICENSE, and is        |
  10. // | available at through the world-wide-web at                           |
  11. // | http://www.php.net/license/2_02.txt.                                 |
  12. // | If you did not receive a copy of the PHP license and are unable to   |
  13. // | obtain it through the world-wide-web, please send a note to          |
  14. // | license@php.net so we can mail you a copy immediately.               |
  15. // +----------------------------------------------------------------------+
  16. // | Authors: Alexey Borzov <avb@php.net>                                 |
  17. // |          Bertrand Mansion <bmansion@mamasam.com>                     |
  18. // +----------------------------------------------------------------------+
  19. //
  20. // $Id: Page.php,v 1.3 2004/03/02 21:15:52 avb Exp $
  21.  
  22. require_once 'HTML/QuickForm.php';
  23.  
  24. /**
  25.  * The class represents a page of a multipage form. 
  26.  * 
  27.  * Generally you'll need to subclass this and define your buildForm()
  28.  * method that will build the form. While it is also possible to instantiate
  29.  * this class and build the form manually, this is not the recommended way.
  30.  * 
  31.  * @author  Alexey Borzov <avb@php.net>
  32.  * @package HTML_QuickForm_Controller
  33.  * @version $Revision: 1.3 $
  34.  */
  35. class HTML_QuickForm_Page extends HTML_QuickForm
  36. {
  37.    /**
  38.     * Contains the mapping of actions to corresponding HTML_QuickForm_Action objects
  39.     * @var array
  40.     */
  41.     var $_actions = array();
  42.  
  43.    /**
  44.     * Contains a reference to a Controller object containing this page
  45.     * @var object HTML_QuickForm_Controller
  46.     * @access public
  47.     */
  48.     var $controller = null;
  49.  
  50.    /**
  51.     * Should be set to true on first call to buildForm()
  52.     * @var bool
  53.     */
  54.     var $_formBuilt = false;
  55.  
  56.    /**
  57.     * Class constructor
  58.     * 
  59.     * @access public
  60.     */
  61.     function HTML_QuickForm_Page($formName, $method = 'post', $target = '_self', $attributes = null)
  62.     {
  63.         $this->HTML_QuickForm($formName, $method, '', $target, $attributes);
  64.     }
  65.  
  66.  
  67.    /**
  68.     * Registers a handler for a specific action.
  69.     * 
  70.     * @access public
  71.     * @param  string    name of the action
  72.     * @param  object HTML_QuickForm_Action   the handler for the action
  73.     */
  74.     function addAction($actionName, &$action)
  75.     {
  76.         $this->_actions[$actionName] =& $action;
  77.     }
  78.  
  79.  
  80.    /**
  81.     * Handles an action.
  82.     * 
  83.     * If an Action object was not registered here, controller's handle()
  84.     * method will be called.
  85.     * 
  86.     * @access public
  87.     * @param  string Name of the action
  88.     */
  89.     function handle($actionName)
  90.     {
  91.         if (isset($this->_actions[$actionName])) {
  92.             return $this->_actions[$actionName]->perform($this, $actionName);
  93.         } else {
  94.             return $this->controller->handle($this, $actionName);
  95.         }
  96.     }
  97.  
  98.  
  99.    /**
  100.     * Returns a name for a submit button that will invoke a specific action.
  101.     * 
  102.     * @access public
  103.     * @param  string  Name of the action
  104.     * @return string  "name" attribute for a submit button
  105.     */
  106.     function getButtonName($actionName)
  107.     {
  108.         return '_qf_' . $this->getAttribute('id') . '_' . $actionName;
  109.     }
  110.  
  111.  
  112.    /**
  113.     * Loads the submit values from the array.
  114.     * 
  115.     * The method is NOT intended for general usage.
  116.     * 
  117.     * @param array  'submit' values
  118.     * @access public
  119.     */
  120.     function loadValues($values)
  121.     {
  122.         $this->_submitValues = $values;
  123.         foreach (array_keys($this->_elements) as $key) {
  124.             $this->_elements[$key]->onQuickFormEvent('updateValue', null, $this);
  125.         }
  126.     }
  127.  
  128.  
  129.    /**
  130.     * Builds a form.
  131.     * 
  132.     * You should override this method when you subclass HTML_QuickForm_Page,
  133.     * it should contain all the necessary addElement(), applyFilter(), addRule()
  134.     * and possibly setDefaults() and setConstants() calls. The method will be 
  135.     * called on demand, so please be sure to set $_formBuilt property to true to
  136.     * assure that the method works only once.
  137.     * 
  138.     * @access public
  139.     * @abstract
  140.     */
  141.     function buildForm()
  142.     {
  143.         $this->_formBuilt = true;
  144.     }
  145.  
  146.  
  147.    /**
  148.     * Checks whether the form was already built.
  149.     * 
  150.     * @access public  
  151.     * @return bool
  152.     */
  153.     function isFormBuilt()
  154.     {
  155.         return $this->_formBuilt;
  156.     }
  157.  
  158.  
  159.    /**
  160.     * Sets the default action invoked on page-form submit
  161.     * 
  162.     * This is necessary as the user may just press Enter instead of
  163.     * clicking one of the named submit buttons and then no action name will
  164.     * be passed to the script.
  165.     * 
  166.     * @access public
  167.     * @param  string    default action name
  168.     */
  169.     function setDefaultAction($actionName)
  170.     {
  171.         if ($this->elementExists('_qf_default')) {
  172.             $element =& $this->getElement('_qf_default');
  173.             $element->setValue($this->getAttribute('id') . ':' . $actionName);
  174.         } else {
  175.             $this->addElement('hidden', '_qf_default', $this->getAttribute('id') . ':' . $actionName);
  176.         }
  177.     }
  178. }
  179.  
  180. ?>
  181.